With the provisioning services enabled, the next step is to define and
customize a system image that can subsequently be used to provision one or more
{\em compute} nodes. The following subsections highlight this process.

\subsubsection{Build initial BOS image} \label{sec:assemble_bos}
The \OHPC{} build of \Warewulf{} includes specific enhancements enabling support for
\baseOS{}. The following steps illustrate the process to build a minimal, default
image for use with \Warewulf{}. We begin by defining a directory structure on the 
{\em master} host that will represent the root filesystem of the compute node. The 
default location for this example is in
\texttt{/opt/ohpc/admin/images/\baseos{}}.

\begin{center}
  \begin{tcolorbox}[]
    \small \Warewulf{} is configured by default to access an external
    repository (mirror.centos.org) during the \texttt{wwmkchroot} process.  If
    the master host cannot reach the public CentOS mirrors, or if you prefer to
    access a locally cached mirror, set the \texttt{\$\{YUM\_MIRROR\}}
    environment variable to your desired repo location {\em prior} to running
    the \texttt{wwmkchroot} command below. For example:

% begin_ohpc_run
% ohpc_command if [ ! -z ${BOS_MIRROR+x} ]; then
% ohpc_indent 5
\begin{lstlisting}[language=bash,keywords={}]
# Override default OS repository (optional) - set YUM_MIRROR variable to desired repo location
[sms](*\#*) export YUM_MIRROR=${BOS_MIRROR}
\end{lstlisting}
% ohpc_indent 0
% ohpc_command fi
% end_ohpc_run

\end{tcolorbox}
\end{center}

% begin_ohpc_run
% ohpc_comment_header Create compute image for Warewulf \ref{sec:assemble_bos}
\begin{lstlisting}[language=bash,literate={-}{-}1,keywords={},upquote=true,keepspaces,literate={BOSVER}{\baseos{}}1]
# Define chroot location 
[sms](*\#*) export CHROOT=/opt/ohpc/admin/images/BOSVER

# Build initial chroot image
[sms](*\#*) wwmkchroot centos-7 $CHROOT
\end{lstlisting}
% end_ohpc_run
